package cc.rengu.igas.channel.alipay.facade;

import cc.rengu.igas.channel.alipay.facade.request.*;
import cc.rengu.igas.channel.alipay.facade.response.*;
import cc.rengu.igas.channel.alipay.facade.result.Result;

/**
 * 支付宝商户服务组件
 */
public interface AlipayMchntService {

    /**
     * 商户入驻
     *
     * @param aliCreateMerchantRequest
     * @return 商户入驻应答
     * @
     */
    Result<AliCreateMerchantResponse> aliCreateMerchant(AliCreateMerchantRequest aliCreateMerchantRequest);


    /**
     * 查询商户信息
     *
     * @param aliQueryMerchantRequest
     * @return 商户信息
     * @
     */
    Result<AliQueryMerchantResponse> aliQueryMerchant(AliQueryMerchantRequest aliQueryMerchantRequest);


    /**
     * 更新商户
     *
     * @param aliUpdateMerchantRequest
     * @return 更新结果
     * @
     */
    Result<AliUpdateMerchantResponse> aliUpdateMerchant(AliUpdateMerchantRequest aliUpdateMerchantRequest);


    /**
     * 批量查询支付宝风险商户信息
     *
     * @param aliRiskMchntQueryRequest
     * @return 风险商户信息
     * @
     */
    Result<AliRiskMchntQueryResponse> aliRiskQuery(AliRiskMchntQueryRequest aliRiskMchntQueryRequest);

    /**
     * 间连商户运营活动报名
     *
     * @param activityCreateRequest 活动报名请求
     * @return 活动id
     */
    Result<ActivityCreateResponse> activityCreate(ActivityCreateRequest activityCreateRequest);

    /**
     * 商户运营活动确认
     *
     * @param activityConfirmRequest 活动确认请求
     * @return 活动确认结果
     */
    Result<ActivityConfirmResponse> activityConfirm(ActivityConfirmRequest activityConfirmRequest);

    /**
     * 获取支付宝商户应用授权URL
     *
     * @param aliGetAppAuthCodeRequest 请求对象
     * @return 商户应用授权地址
     */
    Result<AliGetAppAuthCodeResponse> getAppAuthCode(AliGetAppAuthCodeRequest aliGetAppAuthCodeRequest);

    /**
     * 获取支付宝商户应用授权TOKEN
     *
     * @param aliGetAppAuthTokenRequest 请求对象
     * @return 商户应用授权TOKEN信息
     */
    Result<AliGetAppAuthTokenResponse> getAppAuthToken(AliGetAppAuthTokenRequest aliGetAppAuthTokenRequest);

    /**
     * 支付宝终端信息采集
     *
     * @param aliAcquireTermInfoRequest 请求对象
     * @return 终端信息采集应答
     */
    Result<AliAcquireTermInfoResponse> aliAcquireTermInfo(AliAcquireTermInfoRequest aliAcquireTermInfoRequest);
}
